home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Games / NeXTmille / Source / CardView.h < prev    next >
Text File  |  1994-04-30  |  4KB  |  129 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import    <appkit/appkit.h>
  5. #import    <zone.h>
  6. #import "TagView.h"
  7. #import    "CardImage.h"
  8. #import    "DragCoordinator.h"
  9.  
  10.  
  11. // This is a base class from which every card is derived.
  12.  
  13. // These are the physical bitmap size for each card.
  14. #define    CARD_WIDTH    100
  15. #define    CARD_HEIGHT    150
  16.                                         
  17. // All cards in the deck have the save top face image.
  18. //    This variable is assigned in this class's
  19. //    +initialize method and all instances of this class
  20. //    reference that bitmap when drawing their top face.
  21.     extern CardImage    *topFaceBitmap;
  22.  
  23. // All of the cards composite their face to this window
  24. //    to implement dragging.  
  25.                                                 
  26. // This variable is initialized in the class's
  27. //    +initialize method.
  28.     extern Window        *compositeWindow;
  29.                                                 
  30. // All of the card image objects are allocated
  31. //    from this zone.
  32.     extern NXZone        *cardZone;
  33.     
  34.     
  35. @interface CardView:TagView
  36. {
  37.  
  38.                                                 
  39. // This is the bitmap used for the bottom face of the card.
  40. //    This variable is declared here but 
  41. //    always assigned in a subclass.
  42.     CardImage            *bottomFaceBitmap;
  43.  
  44. // When true the top face of the card is composited to
  45. //    the view, false indicates the bottom face.
  46.     BOOL                showTopFaceFlag;
  47.  
  48.                                                 
  49. // This flag indicates to the card whether it should respond
  50. //    to events implemented in this class or pass then along the
  51. //    responder chain.  Cards that are in the draw pile and your
  52. //    hand tile respond to events.  In all other cases the events are
  53. //    passed along the responder chain (this is because the draw pile
  54. //    and hand tile are the only cases where cards can be grabbed).
  55.     BOOL                eventsEnabledFlag;
  56.                                                 
  57. // Dragging a card is implemented more in fashion with how 
  58. //    the appkit intended it to--although it is somewhat complex.
  59.  
  60. // When the mouseDown:event is detected the window's event mask is
  61. //    altered to allow dragging.  The mouseUp: event restores it to
  62. //    its previous state.
  63.                                                 
  64. // The delta is the coordinate depth into the card--in bounds
  65. //    coordinates--where the mouseDown: event was first detecetd.
  66. //    this allows for offset adjustment when the card is being
  67. //    dragged (we have to specify the corner of the composite
  68. //    window when dragging).
  69.     int                    oldMask;
  70.     NXPoint                cardDelta;
  71.                                                 
  72. // While a card is being dragged around the screen and when the
  73. //    card is released, this object is informed of those actions.
  74.                                                 
  75. // That object takes care of notifying tracking views and passing
  76. //    the card from this object's super view to the tracking view.
  77.     DragCoordinator        *dragCoordinator;
  78. }
  79.  
  80.                                                 
  81. // The initialize method locates and creates a bitmap for
  82. //    the top card face such that this bitmap can be shared by
  83. //    all cards.
  84. + initialize;
  85.                                                 
  86. // The +new method simply modifys the instance variable 
  87. //    so that the top card will be displayed first.
  88. - init;
  89.                                                 
  90. // Destroys the bottom card face bitmap.
  91. - free;
  92.                                                 
  93. // This method controls whether subclasses of this class will
  94. //    respond to events (YES=respond).
  95.                                                 
  96. // This method is usually called by one of the stack or tile views
  97. //    when a card is handed to them.
  98. - setEventsEnabled:( BOOL )flag;
  99.                                                 
  100. // On mouseDown: events the card is composited to the compositeWindow's
  101. //    content view and the window is displayed above the card's view.
  102. //    The play window's event mask is altered to allow dragging events to be 
  103. //    passed.
  104.                                                 
  105. // When the mouse goes up the window is moved off the screen.  If the
  106. //    mouseUp: event ocurred over a tracking rectangle then the card
  107. //    view is passed to the owner of that rectangle.  Also, then window's
  108. //    event mask is restored to its previous state.
  109.                                                 
  110. // As mouseDragged: events are received the compositeWindow is moved
  111. //    about the screen.
  112. - mouseDown:( NXEvent * )theEvent;
  113. - mouseUp:( NXEvent * )theEvent;
  114. - mouseDragged:( NXEvent * )theEvent;
  115.                                                 
  116. // This object is informed of card drag movement and when the
  117. //    card is released.
  118. - setDragCoordinator:( DragCoordinator * )anObject;
  119.                                                 
  120. // This method determines which face of the card is displayed
  121. //    (YES==top side).
  122. - setShowTopFace:( BOOL )flag;
  123.  
  124.  
  125. - drawSelf:( const NXRect * )rects :( int )rectCount;
  126.  
  127.  
  128. @end
  129.